package org.wlw.user;

public class UserManager {
	//所有的用户信息都是存储在内存中，程序关闭之后用户就清空了
	private User[] users;
	//存储用户的最大数量
	private int maxSize;
	//当前的用户数量
	private int index;
	
	public UserManager(int size) {
		users = new User[size];
		maxSize = size;
		index = 0;
	}
	
	public void add(int pos,User user) {
		//1、添加的数量超过maxSize时不能添加
		if(index>=maxSize) {
			System.out.println("用户存储到上限，不能再添加用户了!");
			return;
		}
		//3、位置不正确也不能添加
		if(pos>index||pos<0) {
			System.out.println("添加的位置不正确!不能添加");
			return;
		}
		//2、如果用户存在也不能添加
		User tu = this.load(user.getUsername());
		if(tu!=null) {
			System.out.println("用户已经存在!不能添加!");
			return;
		}
		
		//添加1、移位
		for(int i=index;i>pos;i--) {
			users[i] = users[i-1];
		}
		users[pos] = user;
		index++;
	}

	public void add(User user) {
		add(index,user);
//		//1、添加的数量超过maxSize时不能添加
//		if(index>=maxSize) {
//			System.out.println("用户存储到上限，不能再添加用户了!");
//			return;
//		}
//		//2、如果用户存在也不能添加
//		User tu = this.load(user.getUsername());
//		if(tu!=null) {
//			System.out.println("用户已经存在!不能添加!");
//			return;
//		}
//		//3、添加用户  index=1,index++
//		users[index++] = user;
////		index++;
	}
	
	public void delete(String username) {
		int pos = loadPos(username);
		if(pos==-1) {
			System.out.println("删除的用户不存在!");
			return;
		}
		//移动位置
		for(int i=pos;i<index-1;i++) {
			users[pos] = users[pos+1];
		}
		index--;
	}
	
	public void update(User user) {
		//1、从数组中获取要更新的对象，之后把user的值设置进去
		User tu = this.load(user.getUsername());
		if(tu==null) {
			System.out.println("更新的用户不存在!");
			return;
		}
		tu.setAge(user.getAge());
		tu.setNickname(user.getNickname());
		tu.setPassword(user.getPassword());
	}
	
	public int loadPos(String username) {
		if(username.equals("反动词语")) return -1;
		for(int i=0;i<index;i++) {
			User tu = users[i];
			if(tu.getUsername().equals(username)) {
				return i;
			}
		}
		return -1;
	}
	
	public User load(String username) {
		int pos = loadPos(username);
		if(pos==-1) {
			return null;
		}
		return users[pos];
//		for(int i=0;i<index;i++) {
//			User tu = users[i];
//			if(tu.getUsername().equals(username)) {
//				//找到用户之后，直接返回
//				return tu;
//			}
//		}
//		return null;
	}
	
	public void find() {
		for(int i=0;i<index;i++) {
			users[i].show();
		}
	}
	
	public User login(String username,String password) {
		User tu = this.load(username);
		if(tu==null) {
			System.out.println("用户名不存在！");
			return null;
		}
		if(!password.equals(tu.getPassword())) {
			System.out.println("密码不正确!");
			return null;
		}
		return tu;
	}
}
